package oo;

/**
 * @author Pinky
 * @version 1.0
 * @created 30-jun-2013 01:38:14 a.m.
 */
public class Robot implements InterfazRobot {

	private boolean estado = true;
	private int id;

	private Sistema observador;


	public Robot(int _id){
		this.estado=true;
		this.id=_id;
	}


	public void notifyObserver(){		
		observador.updateRobot(estado, id);
	}
	public void cargar(Input _i,Maquina _m){
		this.estado=false;
		cambieEstado();
		sacarPieza(_i);
		ponerPieza(_m);
	}
	public void descargar(Output _o, Maquina _m, int _lugar){
		this.estado=false;
		cambieEstado();
		ponerPieza(_o);
		sacarPieza(_m, _lugar);
	}
	public void trasladar(Maquina desde, Maquina hasta, int _lugar){
		this.estado=false;
		cambieEstado();
		sacarPieza(desde, _lugar);
		ponerPieza(hasta);
	}
	public boolean getEstado(){
		return estado;
	}
	public void cambieEstado(){
		notifyObserver();
	}
	public void registerObserver(Sistema _observador){
		this.observador=_observador;
	}
	
	public void sacarPieza(Input _i){  	// sacar pieza de Input
		_i.descontar();
	
		
	}
	public void ponerPieza(Output _o){		// poner pieza en Output
		_o.contar();
	}
	
	public void ponerPieza(Maquina _m){ //mi estado del robot se lo cambio a true porque se desocupa
		_m.ocupar();
		this.estado=true;
		cambieEstado();
	}
	public void sacarPieza(Maquina _m,int _lugar){
		_m.desocupar(_lugar);
		this.estado=true;
		cambieEstado();
	}
}